<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>队列 先进先出</h1>
<h2>表头出去，表尾进</h2>
<h3>换成一个对象结构</h3>
<script>
    /*
    * Queue 队列
    * */
    class Queue{
        items = {}
        lowCount = 0 ;// 对头的索引
        count = 0; // 加了多少值

        dequeue(){ // 出队 从队列头部
            if(this.isEmpty()){ // 先判断是不是空
                return
            }
            // 先保存再删除
            let res = this.items[this.lowCount]
            delete this.items[this.lowCount]
            this.lowCount++
            return res
        }
        enquene(data){ // 进队 从表尾
            this.items[this.count] = data
            this.count ++
        }
        peek(){ // 返回对头
            return this.items[this.lowCount]
        }
        isEmpty(){ // 判断是不是空
            return this.size() === 0
        }
        size(){
            return this.count - this.lowCount
        }
        clear(){ // 清空队列
            this.items = {}
        }
        toString(){ // 转成字符串展示出来
            let str = ''
            for(let i=0;i<this.size();i++){
                str += this.items[this.lowCount+i]
            }
            return str
        }
    }
    let obj = new Queue()

    function game(list,num){
        let queue = new Queue()
        for(let i =0 ;i<list.length;i++){
            queue.enquene(list[i])
        }
        // 当循环 >1的时候循环  = 1的时候游戏就结束了
        while(queue.size()>1){
            for(let i=0;i<num;i++){
                // 循环次数
                queue.enquene(queue.dequeue())
            }
            console.log(queue.dequeue(),'淘汰了')
        }
        return queue.peek()
    }
    game(['小明','小红','销量','小郑','小白'],7)
</script>
</body>
</html>
